#include <head.h>

pthread_mutex_t mutex;

void * Func_pthread_1(void * arg)
{
    while (1)
    {
        // 上锁
        pthread_mutex_lock(&mutex);

        // 模拟运行
        printf("我是小明 我运行了\n");
        sleep(2);

        // 解锁
        pthread_mutex_unlock(&mutex);

        // 模拟运行
        printf("我是小明 我结束了\n");
        sleep(2);
    }
    

}


void * Func_pthread_2(void * arg)
{
    while (1)
    {
        // 上锁
        pthread_mutex_lock(&mutex);

        // 模拟运行
        printf("我是小王 我运行了\n");
        sleep(2);

        // 解锁
        pthread_mutex_unlock(&mutex);

        // 模拟运行
        printf("我是小王 我结束了\n");
        sleep(2);
    }

}

int main(int argc, char const *argv[])
{
    // 创建互斥锁
    pthread_mutex_init(&mutex , NULL);

    // 线程的创建
    pthread_t tid1;
    pthread_t tid2;

    pthread_create(&tid1 , NULL , Func_pthread_1 , NULL);
    pthread_create(&tid2 , NULL , Func_pthread_2 , NULL);

    
    // 线程的回收
    pthread_join(tid1 , NULL);
    pthread_join(tid2 , NULL);

    // 回收互斥锁
    pthread_mutex_destroy(&mutex);
    return 0;
}